package eventos.abrir;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

import logica.EntidadRol;

import controlador.IObjDelModConRefExternaEntidad;

import eventos.EventoCancelarEdición;
import eventos.aceptar.EventoAceptarEntidadRolEditada;

import vista.paneles.ElementoNoExistenteException;
import vista.ventanas.VentanaEntidadRol;
import vista.ventanas.VentanaRelacion;

public class EventoEditarEntidadRol extends MouseAdapter {
	
	private VentanaRelacion ventanaContenedora;
	private IObjDelModConRefExternaEntidad controlador;
	
	public EventoEditarEntidadRol(VentanaRelacion ventanaContenedora, IObjDelModConRefExternaEntidad controlador)
	{
		super();
		this.ventanaContenedora = ventanaContenedora;
		this.controlador = controlador;
	}
	
	public void mouseClicked(MouseEvent e)
	{
		VentanaEntidadRol ventana;
		EntidadRol entidadRolAEditar = this.ventanaContenedora.getEntidadRolSeleccionada();
		
		try
		{
			if (entidadRolAEditar != null)
			{
				ventana = new VentanaEntidadRol(ventanaContenedora, controlador.getEntidadesExitentes(), entidadRolAEditar) ;
			
				controlador.setGraficableEditando(entidadRolAEditar.getMementoGenerico());
				
				EventoAceptarEntidadRolEditada eventoAceptar = new EventoAceptarEntidadRolEditada(ventana);		
				ventana.escucharEventosBotonAceptar(eventoAceptar);
			
				EventoCancelarEdición eventoCancelar = new EventoCancelarEdición();
				ventana.escucharEventosBotonCancelar(eventoCancelar);
				
				ventana.setVisible(true);
			}
			else
				JOptionPane.showMessageDialog(this.ventanaContenedora, "No se seleccionó ninguna Entidad Rol para modificar", "Operación Inválida", JOptionPane.ERROR_MESSAGE);
		} 
		
		catch (ElementoNoExistenteException e1) 
		{
			JOptionPane.showMessageDialog(this.ventanaContenedora, e1.getMessage() + "\n No se encontró esa Entidad: "+ entidadRolAEditar.getEntidad().getNombre() + " entre las entidades existentes", "Error", JOptionPane.ERROR_MESSAGE);
		}
		
	}	
}
